home *** CD-ROM | disk | FTP | other *** search
- (*
- Date: 07-10-93 (02:15)
- From: LAWRENCE JOHNSTONE
- Subj: DISK'S SERIAL NUMBER.
- This will work under DOS 4.0 or later, according to Microsoft's MS-DOS
- Programmer's Reference (earlier versions of DOS didn't give disks
- serial numbers).
- *)
-
- UNIT MediaID;
-
- INTERFACE
-
- TYPE
- TMediaID = RECORD
- InfoLvl: WORD;
- SerialNum: LONGINT;
- VolLabel: ARRAY [1..11] OF CHAR;
- FileSys: ARRAY [1..8] OF CHAR;
- END;
-
- FUNCTION GetMediaID( Drive: WORD; VAR MID: TMediaID ): BOOLEAN;
- (* Drive: 0=default, 1=A, 2=B, etc. *)
-
- FUNCTION SetMediaID( Drive: WORD; CONST MID: TMediaID ): BOOLEAN;
-
- IMPLEMENTATION
-
- FUNCTION GetMediaID( Drive: WORD; VAR MID: TMediaID ): BOOLEAN; ASSEMBLER;
- ASM
- push ds
- mov bx, [Drive]
- mov ch, $08 (* Device category (must be 08h) *)
- mov cl, $66 (* Minor code for Get Media ID function *)
- lds dx, [MID] (* DS:DX -> TMediaID structure *)
- mov ax, $440D (* Function 44 (IOCTL), subfunction 0D *)
- int $21
- pop ds
- mov ax, 0 (* Assume function failed *)
- jc @@Done
- inc ax (* Didn't fail -- return TRUE *)
- @@Done:
- END;
-
- FUNCTION SetMediaID( Drive: WORD; CONST MID: TMediaID ): BOOLEAN; ASSEMBLER;
- ASM
- push ds
- mov bx, [Drive]
- mov ch, $08 (* Device category (must be 08h) *)
- mov cl, $46 (* Minor code for Set Media ID function *)
- lds dx, [MID] (* DS:DX -> TMediaID structure *)
- mov ax, $440D (* Function 44 (IOCTL), subfunction 0D *)
- int $21
- pop ds
- mov ax, 0 (* Assume function failed *)
- jc @@Done
- inc ax (* Didn't fail -- return TRUE *)
- @@Done:
- END;
-
-
- END.
-